Flow
Introdução
A funcionalidade de criação de ferramentas de fluxo permite aos usuários desenvolver e gerenciar processos personalizados em sua aplicação. Isso é valioso para automatizar tarefas repetitivas e melhorar a eficiência operacional. Esta funcionalidade é ideal para equipes que desejam otimizar fluxos de trabalho e garantir consistência nos processos.
Primeiros Passos
Para começar a criar uma ferramenta de fluxo, acesse a URL: https://sai-library.saiapplications.com/designer. Certifique-se de estar logado no sistema com as permissões adequadas.
Procedimento
Passo 1: Acessar a Opção Nova Ferramenta
- Navegue até a seção "Ferramentas Criadas".
- Clique no botão de criar nova ferramenta.

Passo 2: Inserir Nome da Ferramenta
- No campo visível, digite "My New Tool".
- Clique no botão de confirmar para salvar.

Passo 3: Selecionar Tipo de Template
- Clique no seletor de tipo.
- Escolha a opção "Flow" no menu suspenso.

Passo 4: Adicionar Descrição
- No campo "Descrição", digite "This is a test description".

Passo 5: Revisar Seção Geral
Revise a seção "Geral" para confirmar que as informações estão corretas. Aqui você pode definir a categoria e o formato de saída.

Passo 6: Configurar Seção de Entradas
Adicione novas entradas conforme necessário para personalizar como a ferramenta receberá dados.

Passo 7: Configurar Seção de Fluxo
Utilize os blocos de fluxo para definir a lógica do seu processo. Os blocos de fluxo permitem criar workflows automatizados sofisticados.

Blocos de Fluxo Disponíveis:
If — Condicional
Executa código JavaScript para decidir entre dois caminhos: True ou False.
- Input: Dados recebidos do bloco anterior.
- Código JS: Deve retornar
trueoufalse. - True / False: Saídas que direcionam a continuidade do fluxo.
Use quando for necessário validar valores, comparar estados ou controlar bifurcações do fluxo, como sempre se fez em lógica clássica.
🔁 Iterate — Iteração de Coleção
Percorre uma lista (array) item por item, executando os blocos conectados internamente.
- Collection: A lista a ser percorrida.
- Item Variable Name: Nome da variável que representa cada item da lista.
- Item Output: Expõe o item atual para os blocos seguintes.
Ideal para repetir ações sobre uma coleção de dados.
🔧 Call Tool — Chamar Ferramenta
Executa uma ferramenta registrada no sistema, como APIs internas, prompts ou funções personalizadas.
- Block Name: Nome simbólico do bloco.
- Select Tool: Ferramenta a ser executada.
- Input: Dados enviados para a ferramenta.
- Output: Resultado retornado pela ferramenta.
Mantém a tradição de delegar trabalho a módulos bem definidos.
✏️ Set Variable — Definir Variável
Cria ou altera uma variável de fluxo.
- Variable Name: Nome da variável.
- Variable Value: Valor atribuído.
- Output: Variável resultante.
Usado para armazenar estados, resultados intermediários ou preparar dados para etapas futuras.
🟨 Execute JS — Executar JavaScript
Executa código JavaScript arbitrário dentro do fluxo.
- Input / Output: Dados de entrada e saída do comando.
- Uso: Transformações, cálculos e lógicas que exigem maior flexibilidade.
Fluxo de Execução
A sequência na qual os blocos são executados é determinada por suas portas de entrada e saída.
Cada conexão a uma porta de entrada de um bloco pode ser vista como uma pré-condição que deve ser satisfeita antes que o bloco possa executar. Nos casos em que um bloco tem múltiplas conexões de entrada, todos os blocos conectados devem executar primeiro antes que o bloco atual possa prosseguir.
Qualquer bloco sem uma conexão de entrada será agendado para executar imediatamente quando o fluxo começar, permitindo que múltiplos blocos executem simultaneamente.
Exemplo de ordem de execução:
- Ao iniciar o fluxo, ambos os blocos a e b executarão simultaneamente
- Uma vez que a e b tenham sido concluídos, c executará
- Após a conclusão de c, d executará
- Subsequente à conclusão de d, ambos e e f executarão
- O fluxo será concluído quando não houver blocos restantes para executar
Condições
No design de fluxo, pode haver instâncias onde é necessário executar certos blocos com base em condições. Isso pode ser alcançado através da utilização do bloco if, que permite a avaliação de uma string como código JavaScript.
- Se o código avaliar como true, apenas os blocos conectados à porta True são executados.
- Por outro lado, se a avaliação resultar em false, a execução será restrita aos blocos conectados à porta False.
Iterações
O bloco Iterate permite processar cada elemento em uma lista executando ações neles um de cada vez. Ele aceita entrada como uma string separada por vírgulas ou um array JSON.
Campos:
- Collection: A lista a ser percorrida, suportando sintaxe mustache.
- Item Variable Name: O nome da variável atribuído ao item atual, que pode ser usado por blocos durante a iteração. Se dois blocos Iterate executarem ao mesmo tempo ou estiverem aninhados, cada um deve usar um nome de variável único.
Portas de Saída:
- Item: Conecta aos blocos executados para cada item na coleção.
- Output: Conecta aos blocos executados após todas as iterações serem concluídas.
Quando blocos são vinculados à porta Item, uma caixa delimitadora aparece ao redor deles para indicar visualmente o que será executado para cada item.
Exemplo Completo: Gerador de Oferta Inteligente
Este exemplo demonstra como criar um Gerador de Oferta Inteligente usando o tipo de ferramenta Flow.
Etapas:
- Criar um dossiê sobre o cliente
- Identificar desafios do dossiê
- Para cada desafio, buscar casos e soluções da Stefanini
- Produzir um relatório final vinculando desafios do cliente a casos e soluções da Stefanini
Implementação:
-
Definir Entrada: Apenas o nome do cliente é necessário como entrada.
-
Primeiro Bloco (getCompanyInfo): Adicione um bloco Call Tool definido como "SmartOffer-CompanyInformation." Esta ferramenta Prompt usa o modelo "gpt-4o-mini-search" para coletar informações sobre o cliente e gerar um dossiê. Passe a entrada do cliente usando
{{ inputs.client }}. -
Segundo Bloco (getChallenges): Conecte a outro bloco Call Tool que extrai desafios do texto do dossiê e os produz como um array JSON. Passe a saída anterior usando
{{ outputs.getCompanyInfo }}. -
Bloco Iterate: Conecte a um bloco Iterate com Collection definido como
{{ outputs.getChallenges }}e Item Variable Name como "item". -
Dentro da Iteração (getCases e getSolutions): Na porta item, adicione ferramentas Request para consultar Bases de Conhecimento para casos e soluções, cada uma recebendo
{{ variables.item }}como entrada. -
Acumular Resultados: Use um bloco Set Variable para atualizar a variável "challenges":
{{ variables.challenges }}
# Challenge: {{ variables.item }}
## Cases
{{ outputs.getCases }}
## Solutions
{{ outputs.getSolutions }} -
Bloco Final (getOffer): Após todas as iterações, chame uma ferramenta Prompt que gera o relatório final usando
{{ inputs.client }},{{ outputs.getCompanyInfo }}e{{ variables.challenges }}. -
Definir Formato de Saída: Em Set Output Format, use
{{ outputs.getOffer }}para definir o resultado.
Passo 8: Configurar Controle de Acesso
Defina as permissões de acesso para a ferramenta. Escolha entre "Público" ou "Privado" e gerencie os proprietários.

Resultado
Após completar esses passos, sua ferramenta de fluxo estará configurada e pronta para uso. Você verá a ferramenta listada na seção "Ferramentas Criadas", e poderá gerenciar suas configurações conforme necessário.